package com.hyg.common.utils.glide;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.bumptech.glide.load.Options;
import com.bumptech.glide.load.model.GlideUrl;
import com.bumptech.glide.load.model.ModelLoader;
import com.bumptech.glide.load.model.stream.BaseGlideUrlLoader;

import java.io.InputStream;

public class ChooseModeLoader extends BaseGlideUrlLoader<String> {

    private ModelLoader<GlideUrl, InputStream> concreteLoader;

    protected ChooseModeLoader(ModelLoader<GlideUrl, InputStream> concreteLoader) {
        super(concreteLoader);
        this.concreteLoader = concreteLoader;
    }

    @Override
    protected String getUrl(String s, int width, int height, Options options) {
       return s;
    }




    @Override
    public boolean handles(@NonNull String s) {
        if(s.contains("image_manager_disk_cache")){// 这是为了解决BigImageViewPager 显示图片，是从缓存中查找的
            return false;
        }else if(s.startsWith("/")){ //本地图片，也不走我们的方法了
            return false;
        }else if(s.startsWith("content:")){//本地uri图片，也不走我们的方法了
            return false;
        }else if(s.startsWith("file://")){
            return false;
        }
        return true;
    }

    @Nullable
    @Override
    public ModelLoader.LoadData<InputStream> buildLoadData(@NonNull String url, int width, int height, @NonNull Options options) {
        //LogUtils.d("origin URL:"+s);

//        String realUrl = getFixUrl(s);
        //LogUtils.d("appendUrl:"+realUrl);
        if(url.matches("[a-zA-z]+://[^\\s]*")){
            return this.concreteLoader.buildLoadData(new ImageGlideUrl(url),width,height,options);
        }else{
            return super.buildLoadData(url,width,height,options);
        }

    }
}
